package com.photonpay.api.response;

import lombok.Data;

import java.math.BigDecimal;

/**
 * 开卡
 * @author ：lo-
 * @date ：Created in 2023/11/22 14:40
 */
@Data
public class OpenCardResponse extends BaseResponse {

    private DataInfo data;

    @Data
    public static class DataInfo {
        /**
         * 商户请求流水号，每笔交易的唯一请求号，不可重复。
         */
        private String requestId;

        /**
         * "pending" "pending_recharge" "succeed" "failed" 请求状态
         */
        private String status;

        /**
         * 卡信息
         */
        private CardDetail cardDetail;

        /**
         * 开卡中状态
         *
         * @return true = 是
         */
        public boolean openingCardStatus() {
            return "pending".equals(this.status) || "pending_recharge".equals(this.status);
        }

        /**
         * 开卡失败状态
         *
         * @return true = 是
         */
        public boolean openCardFailStatus() {
            return "failed".equals(this.status);
        }

        /**
         * 开卡成功状态
         *
         * @return true = 是
         */
        public boolean openCardSuccessStatus() {
            return "succeed".equals(this.status);
        }
    }

    @Data
    public static class CardDetail {

        /**
         * 卡的可交易额度。
         */
        private BigDecimal availableTransactionLimit;

        /**
         * 卡的本币。
         */
        private String cardCurrency;

        /**
         * 卡的唯一标识符。
         */
        private String cardId;

        /**
         * 卡号。
         */
        private String cardNo;

        /**
         * 卡组织（枚举："VISA" "MasterCard" "Discover"）。
         */
        private String cardScheme;

        /**
         * 卡状态（枚举："normal" "pending_recharge" "freezing" "frozen" "risk_frozen" "system_frozen" "unfreezing" "expired" "canceling" "cancelled" "unactivated"）。
         */
        private String cardStatus;

        /**
         * 卡类型（枚举："share" "recharge"）。
         */
        private String cardType;

        /**
         * 卡的 CVV（卡验证值）。
         */
        private String cvv;

        /**
         * 与卡关联的电子邮件。
         */
        private String email;

        /**
         * 卡的有效期（格式 MM/YY）。
         */
        private String expirationDate;

        /**
         * 持卡人的名字。
         */
        private String firstName;

        /**
         * 持卡人的姓氏。
         */
        private String lastName;

        /**
         * 与卡关联的 Matrix 账户号。
         */
        private String matrixAccount;

        /**
         * 卡的最大日交易限额。
         */
        private BigDecimal maxOnDaily;

        /**
         * 卡的最大月交易限额。
         */
        private BigDecimal maxOnMonthly;

        /**
         * 单笔交易的最大金额。
         */
        private BigDecimal maxOnPercent;

        /**
         * 与卡关联的会员 ID。
         */
        private String memberId;

        /**
         * 与卡关联的手机号。
         */
        private String mobile;

        /**
         * 手机号的前缀。
         */
        private String mobilePrefix;

        /**
         * 持卡人的国籍，使用两个字母的国家代码表示。
         */
        private String nationality;

        /**
         * 交易限额类型（枚举："limited" "unlimited"）。
         */
        private String transactionLimitType;
    }
}
